package model;

import javax.servlet.http.Part;
import java.io.File;
import java.io.IOException;
import java.util.UUID;

/**
 * 图片上传方法的封装类model
 */
public class Picture {
    /**
     * 传输图片到本地文件中
     * @param part   获取的图片二进制
     * @param upolad 文件所在的路径
     * @return 图片的名称
     */
    public String filesUploadModel(Part part, String upolad) {
        //图片相对路径
        String newFiltName = null;
        try {
            //判断文件是否存在
            File file = new File(upolad);
            if (!file.exists()) {
                file.mkdir();
            }
            //避免名字重复 使用UUID设置名字
            newFiltName = UUID.randomUUID().toString().replace("-", "") + getSuffix(getFileName(part));
            //文件所在路径
            String fileName = upolad + File.separator;
            //设置图片绝对路径
            String location = fileName + newFiltName;
            //插入图片
            part.write(location);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return newFiltName;
    }

    /**
     * 提取文件名
     * @param part
     * @return
     */
    private String getFileName(Part part) {
        //将二进制文件转换字符串
        String header = part.getHeader("Content-Disposition");
        //截取字符
        String[] file = header.split(";");
        for (String s : file) {
            if (s.trim().startsWith("filename")) {
                return s.substring(s.indexOf("=") + 2, s.length() - 1);
            }
        }
        return "";
    }

    /**
     * 提取文件后缀
     * @param filtName
     * @return
     */
    public String getSuffix(String filtName) {
        return filtName.substring(filtName.lastIndexOf("."));
    }
}